home *** CD-ROM | disk | FTP | other *** search
/ PC-SIG: Essential Home & Business / PC-SIG - Essential Home and Business Collection.iso / 22 / 6 / 7 / PFRM.EXE / lha / PF.DOC < prev    next >
Text File  |  1990-06-25  |  92KB  |  2,069 lines

  1. TO:  INTEGRA COMPUTING, Box 72063, Marietta, GA 30007-2063      PopForm ver 3.0
  2.             Name __________________________________________________________
  3.        Firm Name __________________________________  Phone ________________
  4.          Address __________________________________________________________
  5.             City _________________  State ___  Zip _______  County ________
  6.  # Professionals _____  # Employees ____  Type of Practice ________________
  7. I first heard of Integra Computing from ___________________________________
  8. Prices and availability are subject to change without notice.
  9.  
  10. Send unregistered** copies of the following:
  11. ___ copies of TickleX        at $10 ea                                   $_____
  12. ___ copies of MT-Tracker     at $15 ea                                   $_____
  13. ___ copies of Nifty          at $10 ea                                   $_____
  14. ___ copies of RAMdesk        at $10 ea                                   $_____
  15. ___ copies of ReSearch       at $10 ea                                   $_____
  16. ___ copies of BillPower      at $10 ea                                   $_____
  17. ___ copies of BillPower Plus at $15 ea                                   $_____
  18.  
  19. Send registered** copies of the following:
  20. ___ copies of RAMdesk        at $50  [$25 w/TickleX/BillPower]           $_____
  21. ___ copies of PopForm        at $50  [$25 w/TickleX/BillPower/MT-Tracker]$_____
  22. ___ copies of ReSearch       at $50  [+ $60  EXTRA to get 1 hr support]* $_____
  23. ___ copies of TickleX        at $50  [+ $60  EXTRA to get 1 hr support]* $_____
  24. ___ copies of MT-Tracker     at $75  [+ $110 EXTRA to get 2 hr support]* $_____
  25. ___ copies of BillPower      at $100 [+ $110 EXTRA to get 2 hr support]* $_____
  26. ___ copies of BillPower Plus at $150 [+ $200 EXTRA to get 4 hr support]* $_____
  27.  
  28. To have programs supplied on 3.5" media, enclose $5.00 extra PER PROGRAM $_____
  29. If you don't live in the U.S., Canada, or Mexico, please add $10.00 more $_____
  30.  
  31.                                                              TOTAL ORDER $_____
  32.           ___% Sales Tax for ___________ county, if you're a GA resident $_____
  33.     Please enclose a CHECK or MONEY ORDER in US dollars  --  GRAND TOTAL $_____
  34.     (purchase orders unaccompanied by actual payments won't be accepted)
  35.  
  36. I have read and agreed to all the terms of the Disclaimer found below.
  37.  
  38. _______________________________________                       _________________
  39. SIGNATURE                                                     DATE
  40. *   Telephone support will be provided if you pre-purchase it with  this  order 
  41. form.  Such support must be used within a year.  When you need assistance,  you 
  42. may reach Integra Computing (404-973-3586) most weekdays from 4:30pm to 6:30pm, 
  43. Eastern Time.  Because so much time is required to respond to mailed correspon-
  44. dence,  letters requesting assistance may not be answered.  If you  need  help, 
  45. call  -- don't write.  But please don't even call unless  you've  pre-purchased 
  46. support  with this order form; if you call without having prepaid for  support, 
  47. each call will cost you a minimum of $15, plus $1.50 per minute.
  48. **  Unregistered  software is programmed to  remind  you to  register.   Please 
  49. note that no credit will be  given at the time of registration for the cost  of 
  50. an unregistered copy.
  51.      BILLPOWER,  TICKLEX, MT-TRACKER,  POPFORM, RESEARCH,  RAMDESK,  NIFTY  AND 
  52. THEIR  INSTRUCTIONS ARE PROVIDED  "AS  IS", WITHOUT WARRANTY OF ANY KIND  (INC-
  53. LUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY  AND FITNESS FOR A  PARTICULAR 
  54. PURPOSE).  NO ORAL OR WRITTEN INFORMATION  OR ADVICE  PROVIDED  BY INTEGRA, ITS 
  55. DEALERS,  DISTRIBUTORS, AGENTS,  OR  EMPLOYEES SHALL  CREATE A WARRANTY OF  ANY 
  56. KIND  REGARDING BILLPOWER, TICKLEX, MT-TRACKER, POPFORM, RESEARCH, RAMDESK,  OR 
  57. NIFTY, AND  YOU  MAY  NOT RELY UPON SUCH INFORMATION OR  ADVICE.
  58.      NEITHER  INTEGRA NOR ANYONE ELSE WHO HAS BEEN INVOLVED IN  THE   CREATION, 
  59. PRODUCTION,  OR DELIVERY OF BILLPOWER, TICKLEX, MT-TRACKER, POPFORM,  RESEARCH, 
  60. RAMDESK,  OR NIFTY SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL,  OR 
  61. INCIDENTAL DAMAGES (INCLUDING, BUT  NOT LIMITED  TO, DAMAGES FOR LOSS OF  BUSI-
  62. NESS PROFITS, BUSINESS  INTERRUPTION,  AND LOSS  OF  BUSINESS INFORMATION)  AR-
  63. ISING FROM THE USE OF  (OR INABILITY TO USE)  BILLPOWER,  TICKLEX,  MT-TRACKER, 
  64. POPFORM, RESEARCH, RAMDESK, OR NIFTY.
  65. -- LICENSE:
  66.      BillPower,  TickleX,  MT-Tracker, PopForm, ReSearch, Nifty,  RAMdesk,  and 
  67. their  documentation are  copyrighted in 1985 to 1990 by R.A. Kelly.   You  may 
  68. use  any program on as many computers as you like, as long as it is never  ins-
  69. talled  with a SERIAL NUMBER (provided to you when you register as a  user)  on 
  70. more than one computer at a time and as long as you do not alter the program in 
  71. any way.  You may distribute any of these programs to potential new users, pro-
  72. vided  that you never divulge your SERIAL NUMBER to anyone, that you charge  no 
  73. fee for the program, and that you do not bundle it with (or use it as an incen-
  74. tive to purchase or  lease) any  other product or service, without the  written 
  75. consent of R.A. Kelly.  All rights not expressly granted above are reserved  in 
  76. R.A. Kelly.
  77.  
  78. -- DISCLAIMER:
  79.      BillPower, TickleX, MT-Tracker, PopForm, ReSearch, Nifty, and RAMdesk  may 
  80. contain design and  programming  flaws.  Before using ANY software on a regular 
  81. basis,  try estimating the potential harm that could result from your  reliance 
  82. upon  it.  Please don't use any of these programs unless you're willing to  as-
  83. sume  the  associated risks, such as billing and report inaccuracies  and  data 
  84. loss.
  85.  
  86.      BILLPOWER,   TICKLEX, MT-TRACKER, POPFORM, RESEARCH, NIFTY,  RAMDESK,  AND 
  87. THEIR INSTRUCTIONS ARE PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND (INCLUD-
  88. ING  THE  IMPLIED WARRANTIES OF MERCHANTABILITY  AND FITNESS FOR  A  PARTICULAR 
  89. PURPOSE).  NO ORAL OR WRITTEN INFORMATION  OR ADVICE  PROVIDED  BY INTEGRA, ITS 
  90. DEALERS,  DISTRIBUTORS, AGENTS,  OR  EMPLOYEES SHALL  CREATE A WARRANTY OF  ANY 
  91. KIND  REGARDING  BILLPOWER, TICKLEX, MT-TRACKER, POPFORM, RESEARCH,  NIFTY,  OR 
  92. RAMDESK,  AND  YOU  MAY  NOT RELY UPON SUCH INFORMATION OR  ADVICE.    USE   OF  
  93. BILLPOWER, TICKLEX, MT-TRACKER, POPFORM, RESEARCH, NIFTY,OR RAMDESK IS ENTIRELY 
  94. AT YOUR OWN RISK. 
  95.      NEITHER  INTEGRA NOR ANYONE ELSE WHO HAS BEEN INVOLVED IN  THE   CREATION, 
  96. PRODUCTION,  OR DELIVERY OF BILLPOWER, TICKLEX, MT-TRACKER, POPFORM,  RESEARCH, 
  97. NIFTY,  OR RAMDESK SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL,  OR 
  98. INCIDENTAL DAMAGES (INCLUDING, BUT  NOT LIMITED  TO, DAMAGES FOR LOSS OF  BUSI-
  99. NESS  PROFITS,  BUSINESS  INTERRUPTION,  AND LOSS   OF   BUSINESS  INFORMATION)  
  100. ARISING FROM THE USE OF (OR INABILITY TO  USE) BILLPOWER,  TICKLEX, MT-TRACKER, 
  101. POPFORM, RESEARCH, NIFTY, OR RAMDESK, EVEN THOUGH INTEGRA MAY BE ADVISED  THAT
  102. SUCH DAMAGES ARE POSSIBLE.
  103. -- AGREEMENT:
  104.      As used in this Agreement, the terms "BillPower" ,"TickleX", "MT-Tracker", 
  105. "PopForm",  "ReSearch", "Nifty", and "RAMdesk", if not followed by a series  or 
  106. version  designation, mean any version or series of BillPower, BillPower  Plus, 
  107. TickleX, MT-Tracker, PopForm, ReSearch,  Nifty, or  RAMdesk provided to you now
  108. or in the future.
  109.      Your   attempt to use BillPower, TickleX, MT-Tracker,  PopForm,  ReSearch, 
  110. Nifty,  or RAMdesk constitutes your  acceptance of the terms set forth  in  the 
  111. foregoing LICENSE and DISCLAIMER (which are incorporated  into this Agreement).  
  112. Your attempt to use BillPower,  TickleX, MT-Tracker, PopForm, ReSearch,  Nifty, 
  113. or  RAMdesk also constitutes your agreement that if you bring any legal  action  
  114. relating  to BillPower, TickleX, MT-Tracker, PopForm, ReSearch, Nifty, or  RAM-
  115. desk, 1) your sole remedy for the damages for which any defendant is found lia-
  116. ble (including direct, indirect, incidental and consequential damages) will  be 
  117. the recovery of whatever you paid to register as a  user of the program, and 2) 
  118. you  will pay all defendants' attorneys fees  and other legal costs if  you  do 
  119. not prevail on all claims made in your pleadings.
  120.      The  terms of this Agreement are governed by Georgia law.  If any of  this 
  121. Agreement's  terms shall be held invalid to any extent, the remainder  of  this 
  122. Agreement shall be unaffected by such invalidity.
  123.  
  124.      THE ABOVE PARAGRAPHS CONSTITUTE THE ENTIRE AGREEMENT BETWEEN YOU AND INTE-
  125. GRA.  NO ORAL OR WRITTEN COMMUNICATION, INFORMATION, OR ADVICE FROM ANY  SOURCE  
  126. MAY ALTER THE AGREEMENT AS SET FORTH ABOVE.
  127.      SOME STATES DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES OR OF LIABIL-
  128. ITY  FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO SOME OF THE  ABOVE  EXCLUSIONS  
  129. AND  LIMITATIONS  MAY NOT APPLY TO YOU.  YOU MAY HAVE OTHER  RIGHTS  WHICH  MAY 
  130. VARY FROM STATE TO STATE.
  131.  
  132.  
  133.  
  134.  
  135.                                   POPFORM
  136.                                  (ver 3.0)
  137.                              TABLE OF CONTENTS
  138.  
  139.  
  140.  
  141.     INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
  142.  
  143.     USING POPFORM  . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
  144.  
  145.     FORMS OVERVIEW . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
  146.  
  147.     THE TILDE CODES. . . . . . . . . . . . . . . . . . . . . . . . . . . 12
  148.  
  149.     PUTTING IT ALL TOGETHER  . . . . . . . . . . . . . . . . . . . . . . 15
  150.  
  151.     FOR PROGRAMMERS ONLY . . . . . . . . . . . . . . . . . . . . . . . . 26
  152.  
  153.     PREPARING LONG FORMS . . . . . . . . . . . . . . . . . . . . . . . . 30
  154.  
  155.     COMMON ERRORS  . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
  156.  
  157.     CUSTOMIZING POPFORM  . . . . . . . . . . . . . . . . . . . . . . . . 32
  158.  
  159.  
  160.  
  161.  
  162.                                    POPFORM
  163.                                  INSTRUCTIONS
  164.  
  165.  
  166.             If you're using an unregistered copy of the program, 
  167.             it will begin to beep at you in several weeks, reminding 
  168.             you that it's time to register.  Don't worry -- no data 
  169.             will be destroyed, and you'll always be able to use the 
  170.             program, despite the fact that you delay registering. 
  171.  
  172.  
  173.  
  174.           PopForm is a ram-resident program that can be called up from 
  175.      within nearly any application, grab information from the screen, and 
  176.      merge it into a form that's being sent either to a printer or to a 
  177.      disk file.  
  178.  
  179.            PopForm's far more than just the perfect label/envelope printing 
  180.      tool.  You see, unlike the typical single-purpose label or envelope 
  181.      printer, PopForm is actually programmable.  It can execute subrou-
  182.      tines, perform comparisons and conditional procedures, and much, much 
  183.      more.  It'll even do simple page formatting, including margins all 
  184.      around, word wrap, page numbers, and one-line headers and footers.  
  185.  
  186.           With this program, you can prepare forms of nearly ANY complex-
  187.      ity, as long as the information to be plugged into them can be found 
  188.      on your computer's screen.  And, of course, provided that you're wil-
  189.      ling to grasp and implement some basic programming concepts.  If you 
  190.      have simple needs, you'll find PopForm a simple dream-come-true.  But 
  191.      it's nice to know that it also has the power to do heavy-duty chores, 
  192.      if you'll just take the time to do some programming and experimenting.
  193.  
  194.           Since PopForm can deal with numerical and string variables, it it 
  195.      can also be useful as you just browse through a database.  When you 
  196.      come to a screen containing information you'd like to record, just 
  197.      call up PopForm and select a "form" you've prepared that pulls sel-
  198.      ected data from the screen and sends it to a disk file, along with the 
  199.      running total for some important item.  When you've finished your 
  200.      browsing, you can either print the disk file or edit it with your word 
  201.      processor. 
  202.  
  203.  
  204.      INTRODUCTION
  205.  
  206.           All modern word processors have the ability to prepare forms.  
  207.      They can also automate the preparation of these forms through the use 
  208.      of merge-printing.  For instance, you can have your word processor 
  209.      read a list of addresses while it's printing a "blank" mailing label.  
  210.      As it does so, it will merge the address information into the blank 
  211.      form, resulting in a printed label containing an address. 
  212.  
  213.           This merge-printing function is a tremendous time saver, but it 
  214.  
  215.  
  216. INTRODUCTION                         4
  217.  
  218.  
  219.  
  220.  
  221.      is useful only if the blank form and the information to be merged are 
  222.      both accessible by your word processor.  And, of course, your word 
  223.      processor's merge-printing function is available only if you're using 
  224.      the word processor.
  225.  
  226.           But what if it's your data base (or some other program), not your 
  227.      word processor, that contains the information you want merged into a 
  228.      form?  Wouldn't it be nice if you could merge any information shown on 
  229.      your screen into forms that you can access on a pop-up basis?
  230.  
  231.           That's exactly what PopForm does.  It's a memory-resident program 
  232.      that will read any industry-standard ASCII file and send it to your 
  233.      printer, no matter what database, spreadsheet, word processor, etc., 
  234.      you may be using at the time.  And if the file being printed contains 
  235.      appropriate coding, PopForm will pick information right off your 
  236.      screen and merge it into the stream of data going to your printer.  
  237.      Hence, with PopForm, your SCREEN, not a disk file, provides the infor-
  238.      mation be merged into the form being printed.
  239.  
  240.           Let's say you have a canned letter that you'd like to send to 
  241.      a few of the hundreds of people whose vital information is kept in a 
  242.      data base file.  Just enter the data base and conduct a search for the 
  243.      records you think you may want.  As each person's record comes to the 
  244.      screen, you can decide whether you want to send the canned letter to 
  245.      him.  If so, press PopForm's hotkey, make sure that the correct form 
  246.      (the canned letter) is being accessed, and print it.  If you'd 
  247.      also/instead like to print a mailing label or a check, just select the 
  248.      appropriate form and merge-print it as well.  And if you have differ-
  249.      ent pre-printed forms already loaded into different printers, you can 
  250.      actually have PopForm automatically send each form it prepares to the 
  251.      proper printer.
  252.  
  253.           Let's assume that you're using BillPower Plus, Integra Comput-
  254.      ing's time/billing/bookkeeping program.  It includes a "People" module 
  255.      in which you can store thousands of names, addresses, birthdays, phone 
  256.      numbers, and lots of miscellaneous information.  Every person's data 
  257.      screen has a similar layout:  all the headings are the same, but the 
  258.      actual data differs from person to person.  Because each record's 
  259.      screen layout is predictable, you could easily write any number of 
  260.      forms to be used with the data contained in the BillPower's "People" 
  261.      module.  While a single record is being displayed, you could prepare a 
  262.      canned letter, a mailing label/envelope, and/or any other form you 
  263.      desire.
  264.  
  265.           In order to get you started, as well as to provide examples which 
  266.      you can study, PopForm is accompanied by several forms, among which 
  267.      are: 
  268.                a very simple form that demonstrates the program's 
  269.                  basic principles (LABEL.FRM);
  270.                a somewhat more complex form that produces envelopes 
  271.                  on HP Laser printers (HP-ENV.FRM);
  272.                a rather complex airbill form that demonstrates the use 
  273.  
  274.  
  275. INTRODUCTION                         5
  276.  
  277.  
  278.  
  279.  
  280.                  of "IF" and "GOTO" conditional processing (FEDEX.FRM);
  281.                a form that demonstrates PF's use in keeping up with 
  282.                  running totals as you browse through a data base
  283.                  (TOTALS.FRM).
  284.  
  285.      You'll also find a simple text editor (FORMED.EXE) that may be useful 
  286.      in designing simple forms.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332. INTRODUCTION                         6
  333.  
  334.  
  335.  
  336.  
  337.      USING POPFORM
  338.  
  339.           You should install PopForm into its own POPFORM directory on your 
  340.      hard disk.
  341.  
  342.           To use the program, you should first log into the directory con-
  343.      taining PopForm.  The reason you need to be in this directory is that 
  344.      PopForm will always look to the directory from which it's installed 
  345.      when it needs to find its forms.  No matter what directory you may 
  346.      subsequently be logged into when you're running other applications, 
  347.      PopForm will always look for its forms in the subdirectory from which 
  348.      it was loaded.
  349.  
  350.           Once you're in the correct directory, load the program by typing 
  351.      "pf" at the DOS prompt.  Once the program is in memory, you'll be re-
  352.      turned to the DOS prompt.  By default, the program saves memory by 
  353.      swapping itself to and from disk when you call it up and escape from 
  354.      it.  This takes a few seconds every time you press the hotkey.  But if 
  355.      you'd rather save time at the expense of more memory usage, you may 
  356.      install the program ty typing "pf ns" at the DOS prompt.  The prog-
  357.      ram's response will be instantaneous when installed in this fashion, 
  358.      but it will take up about 60K of memory, as compared to about 7K when 
  359.      the default disk-swapping is employed.
  360.  
  361.           Once the program's installed, it may be called up from within any 
  362.      application.  To do so, you need simply press the hotkey (ALT-F, un-
  363.      less you customize the program to recognize another).  PopForm will 
  364.      then display the names of all forms available for printing.  Type in 
  365.      the name of one, press the Enter key, and that form will be sent to 
  366.      the printer.  PopForm will then disappear from the screen until you 
  367.      invoke it again with the hotkey.
  368.  
  369.           The next time you press the hotkey, PopForm will remember the 
  370.      last form it printed.  To re-print that form, just press the Enter 
  371.      key.  If you need to change the form, do that first, and THEN press 
  372.      the Enter key.
  373.  
  374.           By default, PopForm assumes that you'll be sending your form to a 
  375.      printer attached to your computer's LPT1 port.  If your printer is 
  376.      attached to LPT2, you may press ALT-P to change the printer port.  
  377.      When you do, you'll notice that the port designation in the upper-
  378.      right of the PopForm box will change.  If you press ALT-P a second 
  379.      time, PopForm will be set to send the form to a disk file named "PCUE" 
  380.      (PrinterCUE).  Pressing ALT-P a third time will tell PopForm to send 
  381.      the form to a disk file named "TEXT" (you may subsequently use your 
  382.      word processor to edit this file and send it to a printer).  Pressing 
  383.      ALT-P a fourth time completes the circle and brings you back to LPT1. 
  384.  
  385.           If you've been sending a series of forms to the Printer Cue 
  386.      (PCUE), you may easily have that file printed just by pressing Ctrl-P.  
  387.      But before you press Ctrl-P, make sure that you've informed PopForm to 
  388.      stop sending its output to PCUE.  It doesn't make sense to send PCUE's 
  389.  
  390.  
  391. USING POPFORM                            7
  392.  
  393.  
  394.  
  395.  
  396.      contents to itself, so press ALT-P until the appropriate printer (LPT1 
  397.      or LPT2) appears in the upper-right.  THEN, press Ctrl-P to send the 
  398.      contents of the printer cue to the printer.
  399.  
  400.           To exit PopForm and return to your application without printing a 
  401.      form, press the ESC key.  To actually UNLOAD PopForm from memory (so 
  402.      that it will no longer be accessible by your pressing the hotkey), 
  403.      press ALT-X.  
  404.  
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450. USING POPFORM                            8
  451.  
  452.  
  453.  
  454.  
  455.      FORMS OVERVIEW
  456.  
  457.           USING PopForm is a snap, but DESIGNING FORMS will be another mat-
  458.      ter until you become accustomed to it. 
  459.  
  460.           All forms used by PopForm must be located in the POPFORM direc-
  461.      tory (or whatever other directory you place PopForm into).  And each 
  462.      form must have the ".FRM" file name extension (eg: "label.frm", "let-
  463.      ter.frm", "check.frm").  
  464.  
  465.           Each form must have been prepared as an industry-standard ASCII 
  466.      file.  Most modern word processors can produce this type of file, but 
  467.      generally not unless you specifically request it.  If you don't speci-
  468.      fy an ASCII file, your word processor is likely to produce a file in 
  469.      it's proprietary format, which is unlike that used by all other word 
  470.      processors.  If you specify an ASCII file, however, PopForm and most 
  471.      other word processors will be able to read it.  So study your word 
  472.      processor's manual to learn how to produce ASCII files.
  473.  
  474.           Just in case your word processor makes it difficult for you to 
  475.      prepare ASCII files, PopForm is accompanied by a relatively simple 
  476.      text editor called FORMED.  It's handy for making small forms, but 
  477.      you'll probably need a full-featured word processor for the big ones.
  478.  
  479.           Each form will have several spots where you will want to substi-
  480.      tute information from the screen.  At each such spot, you must provide 
  481.      an appropriate code.  As PopForm reads the form file, it will encoun-
  482.      ter these codes and merge information from the screen at those spots.
  483.  
  484.           A PopForm code always BEGINS and ENDS with a tilde (~).  There 
  485.      are several types of codes that may be placed between the two tildes, 
  486.      the most commonly used of which is the Screen Specification.  When 
  487.      PopForm encounters a Screen Specification, it will read the screen 
  488.      positions specified and perform whatever process the tilde code dir-
  489.      ects.  If the tilde code contains NOTHING BUT a Screen Specification 
  490.      (that is, no other directive except, perhaps, a Write Length), PopForm 
  491.      will simply send the data extracted from the screen to the printer.  
  492.      If, however, the tilde code directs PopForm to do some sort of compar-
  493.      ison or mathematical operation with the the screen data, the approp-
  494.      riate operation will be performed without anything being sent to the 
  495.      printer.  So, if you want to send screen data to the printer, all you 
  496.      have to do is to place a Screen Specification between two tildes.  If 
  497.      the tilde code has any other directives (other than a Write Length), 
  498.      nothing will be written. 
  499.  
  500.           A Screen Specification is enclosed within parentheses, and it 
  501.      consists of two parameters, each separated by a comma:  1) either a 
  502.      keyword or a screen location, and 2) the Read Length (number of char-
  503.      acters to read from the screen).  If the Read Length is specified as 
  504.      zero, (or omitted altogether) PopForm will read to the end of the 
  505.      FIRST WORD, regardless of its length, and then stop reading.  
  506.      Examples:
  507.  
  508.  
  509. FORMS OVERVIEW                           9
  510.  
  511.  
  512.  
  513.  
  514.  
  515.                 ~("Name: ",20)~    tells PopForm to find "Name: " on the
  516.                                    screen, read the next 20 characters, and
  517.                                    print them.
  518.                 ~("Name: ")~       tells PopForm to find "Name: " on the
  519.                                    screen, read the next word, and print it.
  520.  
  521.           Another type of data that is frequently used is the Write Length, 
  522.      which informs PopForm how many characters to write to the printer.  It 
  523.      may be used in conjunction with a Screen Specification or any other 
  524.      tilde code that will result in something being sent to the printer.  
  525.      If the Write Length is smaller than the length of the information 
  526.      to be written, that information will be truncated.  If the Write 
  527.      Length is greater than the data length, PopForm will add extra spaces 
  528.      (padding) at the end of the data.  A write length of zero (or no Write 
  529.      Length specification at all) will tell PopForm to write exactly as 
  530.      many characters as are contained in the data to be written, no more 
  531.      and no less.
  532.  
  533.           A Write Length is always enclosed in square brackets.  If it's 
  534.      used, it should be placed within the tilde code before the the item 
  535.      specified to be written, such as a Screen Specification (which, remem-
  536.      ber, is placed within parentheses, not brackets). 
  537.  
  538.             ~[30]("Name: ",20)~    tells PopForm to find "Name: " on the
  539.                                    screen, read the next 20 characters, 
  540.                                    print them, and then add another 10 
  541.                                    blank spaces.
  542.  
  543.           Take a look at the LABEL.FRM file provided with PopForm.  It's a 
  544.      very simple example of the use of screen specifications.
  545.  
  546.  
  547.      - Screen layouts 
  548.  
  549.           Of course, Screen Specifications are useful only if you know the 
  550.      screen arrangement with which a particular form will be used.  There-
  551.      fore, each form you prepare with your word processor will assume a 
  552.      certain screen layout.  You can have a separate form for each type of 
  553.      layout you anticipate being displayed at the time the form is needed.  
  554.      Similarly, you can have many types of forms set up for each individual 
  555.      layout.
  556.  
  557.           Some sample forms are provided with PopForm.  Also provided is a 
  558.      file called TESTDATA.  Each of the provided forms (except the will) is 
  559.      designed to work with TESTDATA, which may be viewed as a sample data 
  560.      base screen.  If you'll look at TESTDATA, you'll see that information 
  561.      is arranged haphazardly on the screen.  This unusual layout is pro-
  562.      vided just to demonstrate that PopForm will find data, no matter where 
  563.      it has been strewn onto the screen.  If you're likely to use PopForm 
  564.      with a number of different main applications, you'll appreciate the 
  565.      fact that PopForm will find the data you want, no matter where it's 
  566.  
  567.  
  568. FORMS OVERVIEW                           10
  569.  
  570.  
  571.  
  572.  
  573.      displayed.
  574.  
  575.           Now look at CHECK.FRM.  This is a check that has been designed 
  576.      for use with Epson-compatible printers.  One of that file's codes is
  577.  
  578.                                ~[25]("payee: ",25)~
  579.  
  580.           This tilde code contains both a Write Length and a Screen Specif-
  581.      ication.  It tells PopForm to look for the character sequence, 
  582.      "payee: ", on the screen.  When it finds that sequence, PopForm should 
  583.      then read the NEXT 25 characters and then print 25 (all of them, in 
  584.      this case) of those characters before reading and printing anything 
  585.      else from the CHECK.FRM file.  If your screen happens to be displaying 
  586.      anything (such as TESTDATA) with the sequence, "payee: ", the approp-
  587.      riate substitution will take place.
  588.  
  589.           Remember, unlike other types of data that can be placed within 
  590.      tilde codes, Screen Specifications are enclosed in parentheses, and 
  591.      Write Lengths are enclosed within square brackets.  Examples: 
  592.  
  593.           ~"payee: ",25~      NO - Screen Specifications must be in parens
  594.           ~("payee: ",10)~    ok - looks for "payee: ", reads 10 charac-     
  595.                                    ters, writes all 10, since no Write
  596.                                    Length given
  597.           ~15("payee: ",25)~  NO - Write Lengths must be in brackets
  598.           ~[9]("payee: ",25)~ ok - reads 25 characters, writes 9 of them
  599.  
  600.  
  601.  
  602.  
  603.  
  604.  
  605.  
  606.  
  607.  
  608.  
  609.  
  610.  
  611.  
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618.  
  619.  
  620.  
  621.  
  622.  
  623.  
  624.  
  625.  
  626.  
  627. FORMS OVERVIEW                           11
  628.  
  629.  
  630.  
  631.  
  632.      THE TILDE CODES
  633.  
  634.           Though the Screen Specifications and Write Lengths covered in the 
  635.      last section are the codes you will most frequently use, there are 
  636.      other things you may specify with tilde codes.  Each will be described 
  637.      in detail later, but here's a brief explanation of each:
  638.  
  639.                DATE   Read today's date from the computer's memory, not 
  640.                         the screen, and send it to the printer.
  641.             WEEKDAY   Read today's weekday from the computer's memory, 
  642.                         not the screen, and send it to the printer.
  643.                TIME   Read the current time from the computer's memory, 
  644.                         not the screen, and send it to the printer.
  645.             NEWPAGE   Tells PopForm to send a form feed instruction to the
  646.                         printer, so that a new sheet of paper will be fed.
  647.     MARGINS t,l,b,r   Sets each printed page's top, left, bottom, and right 
  648.                         margins to t,l,b, and r, respectively.
  649.              HD x,y   PopForm will place header y at the top of each page
  650.                         it prints and then print x blank lines. 
  651.              FT x,y   PopForm will place footer y at the bottom of each page
  652.                         it prints and ensure that there are x blank lines
  653.                         between it and the preceding text.
  654.             WRAP ON   Turns word wrap on.  When ON, Popform will ignore all
  655.                         carriage returns in the form being printed and 
  656.                         determine for itself when to issue a carriage return.
  657.            WRAP OFF   Turn word wrap off.
  658.                   <   ~<~ forces a carriage return and line feed, whether
  659.                         or not word wrap is on.
  660.                   +   If ~+~ is the last thing on a line, it tells PopForm 
  661.                         to join that line with the following one.  No line 
  662.                         feed or carriage return will be sent to the printer 
  663.                         between these two lines.
  664.                   \   If ~\~ is the last thing on a line, it tells Popform 
  665.                         that the following line is to overprint the current
  666.                         one.  Therefore, a carriage return, but no line
  667.                         feed, will be sent to the printer between the two
  668.                         lines.
  669.            CENTER x   Tells PopForm to center all items picked from the 
  670.                         screen.  Each item will be centered on column x.
  671.                         Centering will continue until a CENTER OFF code 
  672.                         is encountered.
  673.          CENTER OFF   Turns off centering.   
  674.         PRINTCODE x   Send printer control decimal code x to the printer.
  675.                C-cc   Go to column cc on the row where the cursor is 
  676.                         currently located and start reading (cc must be
  677.                         2 digits). Whatever is found there will be printed.
  678.                R-rr   Go to row rr on the screen and start reading at 
  679.                         the column where the cursor is presently located
  680.                         (rr must be 2 digits).  Whatever is found there
  681.                         will be printed.
  682.             RC-rrcc   Go to row rr and column cc and start reading (rr
  683.                         and cc must each be 2-digit numbers).  Whatever is
  684.  
  685.  
  686. THE TILDE CODES                          12
  687.  
  688.  
  689.  
  690.  
  691.                         found there will be printed.
  692.           WRITELN x   Display message x in PopForm's box.  If nothing is 
  693.                         already displayed, the message will be located on 
  694.                         the top line; otherwise, it will be put onto the 
  695.                         second line.  Only two lines can be displayed at 
  696.                         one time.
  697.             INPUT x   Prompt the user for keyboard input by displaying                    
  698.                         message x.  Whatever the user keys in will be 
  699.                         sent to the printer, except for a carriage return.
  700.               BLOCK  Allow the user to "block off" a portion of the current
  701.                         screen and send that block's text to the printer.
  702.         NEWSCREEN x  Tells PopForm to display message x, wait for you to 
  703.                         press a key, and then temporarily exit.  This allows 
  704.                         you to call up another screen of data before for 
  705.                         the current form to use.  When you re-enter PopForm, 
  706.                         it will pick up where it had left off just before 
  707.                         exiting.  If x is missing, PopForm will exit without 
  708.                         displaying a message.
  709.             LABEL x   Marks a position within the file.  "x" is the 
  710.                         number or short word you wish to assign to the 
  711.                         position.
  712.              GOTO x   Stop printing and skip to the position in the form
  713.                         defined by label x.  Then, begin printing again.
  714.             GOSUB x   Like GOTO, but will cause PopForm to automatically
  715.             RETURN     pick up where it left off before performing the 
  716.                         subroutine beginning at label x and ending with a
  717.                         RETURN command.
  718.       DO              Defines a DO loop that contains everything between
  719.       UNTIL COUNT x     the "DO" and "UNTIL COUNT x" statements.  The
  720.                         DO loop will be repeated x times.
  721.                NUMx   PopForm keeps 9 numerical variables to which you 
  722.                         may assign values.  They are called NUM1...NUM9.  
  723.                         Each always starts with a value of zero when a new 
  724.                         form is being prepared, but you may alter them 
  725.                         through addition, subtraction, multiplication, 
  726.                         division, and clearing ( +, -, *, /, cc ).
  727.                WRDx   PopForm keeps 9 alphanumeric variables to which you 
  728.                         may assign characters strings.  They are called 
  729.                         WRD1...WRD9.  Each always starts out blank when a 
  730.                         new form is being prepared, but you may alter them 
  731.                         through addition, subtraction, and clearing 
  732.                         ( +, -, cc ).
  733.                 ESC   This is the character that results when the ESC key
  734.                         is pressed.  It may be used when making comparisons
  735.                         in an IF statement (eg: IF the ESC key is pressed, 
  736.                         then do so-and-so).
  737.          DECIMALS x   Defines the precision with which each NUM variable will
  738.                         be printed.  x is the number of decimal places 
  739.                         desired.
  740.            SENDTO x   Send the form to a disk file named x, instead of to 
  741.                         your primary printer.  If you want to send the form 
  742.                         to another PRINTER (not a file), x should be "LPT1",
  743.  
  744.  
  745. THE TILDE CODES                          13
  746.  
  747.  
  748.  
  749.  
  750.                         "LPT2", "LPT3", or "LPT4".
  751.              FILE x   Go to disk file x and print it.  The file must be 
  752.                         located in the same directory as PopForm's other 
  753.                         form files.  Be sure to specify a full file name, 
  754.                         including the extension.
  755.              IF x >   If number x is greater than the number defined by the 
  756.                         following keyword (or screen coordinates), then 
  757.                         execute the next tilde code sequence.  Otherwise, 
  758.                         DO NOT execute the next tilde code sequence.
  759.              IF x <   If number x is less than the number defined by the 
  760.                         following keyword (or screen coordinates), then 
  761.                         execute the next tilde code sequence.  Otherwise, 
  762.                         DO NOT execute the next tilde code sequence.
  763.              IF x =   If phrase x is contained within the phrase defined by 
  764.                         the following keyword (or screen coordinates), then 
  765.                         execute the next tilde code sequence.  OR, if 
  766.                         number x is the equivalent of the number defined by 
  767.                         the following keyword (or screen coordinates), then 
  768.                         execute next tilde code. 
  769.             IF x <>   If phrase x is not contained within the phrase defined 
  770.                         by the following keyword (or screen coordinates), 
  771.                         then execute the next tilde code sequence.  OR, if 
  772.                         number x is not the equivalent of the number defined
  773.                         by the following keyword (or screen coordinates), 
  774.                         then execute next tilde code. 
  775.     IF x ^ a,b,c...   If number x equals number a, b, or c, etc., then 
  776.                         execute next tilde code. 
  777.     IF x | a,b,c...   If number x does not equal number a, b, or c, etc., 
  778.                         then execute next tilde code. 
  779.               { x }   A tilde code containing nothing but comments enclosed 
  780.                         within curly brackets will be ignored by PopForm.
  781.                         You may use this feature to document your forms,
  782.                         without having to worry about your comments' being 
  783.                         printed. 
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.  
  800.  
  801.  
  802.  
  803.  
  804. THE TILDE CODES                          14
  805.  
  806.  
  807.  
  808.  
  809.      PUTTING IT ALL TOGETHER
  810.  
  811.  
  812.      - In General
  813.  
  814.           A simple form can be slapped together in no time.  A mailing 
  815.      label is a good example.  As your needs become more complex, however, 
  816.      you'll find yourself using PopForm's programming features to flash 
  817.      prompts onto the screen, compare screen data with other information, 
  818.      perform subroutines, etc.  A complex form could conceivably take many 
  819.      hours (even days) to develop.  Telling PopForm when to print what, and 
  820.      on which line to print it may be tricky.  But it CAN be done with some 
  821.      perseverance.  So please study the remainder of this manual and de-
  822.      velop some practice forms, so that you can experiment with each of 
  823.      PopForm's specialized codes.  Good luck.  
  824.  
  825.  
  826.      - Keywords and Screen Locations
  827.  
  828.           If the data you want to insert in your form always follows a par-
  829.      ticular keyword, screen coordinates aren't important;  PopForm will 
  830.      find the data, no matter where it may appear on the screen if you 
  831.      supply it with the keyword (eg: "Street: ").  
  832.  
  833.           PopForm is not case sensitive when it's scanning the screen for a 
  834.      keyword you've supplied.  That is, capitalization doesn't make any 
  835.      difference to PopForm when it's looking for a keyword.  But what it 
  836.      sends to the printer will be EXACTLY what is found on the screen fol-
  837.      lowing the keyword.
  838.  
  839.           An alternative to a keyword search is to specify the exact screen 
  840.      coordinates where the data you want may be found.  Screen coordinate 
  841.      numbering begins in the upper left corner, whose coordinate is "0101" 
  842.      (row 01, column 01).
  843.  
  844.           Let's assume that you have your data arranged in an array (a 
  845.      spreadsheet, for instance), and that there are no predictable key-
  846.      words.  Wouldn't it be nice to be able to move the cursor to a speci-
  847.      fic row and merge the data on that row into your form?  
  848.  
  849.           The "C-cc" code does just that.  The "cc" portion of the code 
  850.      specifies the COLUMN (two digits, please) at which the data you want 
  851.      to merge begins.  The ROW is defined as that where the cursor was lo-
  852.      cated just before popping into PopForm.  Take a look at RPRTCARD.FRM, 
  853.      a simple report card whose data also happens to be taken from the 
  854.      TESTDATA file.  You'll note that the "Grade" item is on the line 
  855.      following "Student".  But when it prints out, you'll notice that both 
  856.      items are on the same line (see the "line overwrites" discussion in a 
  857.      subsequent section).
  858.  
  859.           To use the RPRTCARD form, use your word processor to bring TEST-
  860.      DATA to the screen.  Then cursor down to any of the lines containing 
  861.  
  862.  
  863. PUTTING IT ALL TOGETHER                  15
  864.  
  865.  
  866.  
  867.  
  868.      student names.  Pop into PopForm, select the RPRTCARD form, and press 
  869.      the Enter Key.  That line's data will be merged into the form.  Select 
  870.      another student, and try again, if you like.
  871.  
  872.           The "R-rr" code works the same sort of magic for rows.  Here, 
  873.      the "rr" portion of the code specifies the ROW (two digits) at which 
  874.      the data you want to merge begins.  The COLUMN is defined as that 
  875.      where the cursor was located just before popping into PopForm.
  876.  
  877.           What if you want to specify an exact row and column, neither of 
  878.      which depends upon cursor location?  Answer: the "RC-rrcc" code.  
  879.      Here, both the row ("rr") AND column ("cc") are specified, each in two 
  880.      digits.
  881.  
  882.           Remember, Read and Write Lengths of zero have special meanings.  
  883.      A Read Length of zero normally tells PopForm that the number of char-
  884.      acters to be read is not important, and that PopForm should, instead, 
  885.      read to the end of the FIRST WORD, regardless of its length.  A Write 
  886.      Length of zero tells PopForm to print the string of characters you 
  887.      desire (such as a date found in the computer's memory, or several 
  888.      words picked from the screen), no more and no less.
  889.  
  890.  
  891.      - Line Overwriting and Line Joining  (VERY, VERY IMPORTANT!)
  892.  
  893.           These two features are invaluable.  Read, practice, and master 
  894.      the contents of this section!
  895.  
  896.           As you prepare forms with your word processor, you'll find that 
  897.      estimating the proper spacing is sometimes difficult, especially if 
  898.      you intend to be printing upon typeset paper.
  899.  
  900.           You may find that the tilde codes you enter are so long that they 
  901.      distort the appearance of the form on your screen.  Assume, for ins-
  902.      tance, that the data you want printed is only 6 characters long, but 
  903.      that it takes 13 characters to define it with a tilde code.  In this 
  904.      case, everything to the right of your code will appear 7 spaces out of 
  905.      alignment.  PopForm doesn't care, but you may have difficulty visual-
  906.      izing the form as you're constructing it.
  907.  
  908.           You'll notice that CHECK.FRM has a few lines that have missing 
  909.      border characters.  Those lines are to be combined with the lines 
  910.      immediately preceding or following them.  How?  Line Joining and Line 
  911.      Overwriting.  Line Overwriting allows your printer to over-print two 
  912.      or more lines of data on the same physical line on the paper.  Though 
  913.      your screen may show 2 or three separate lines, Line Overwriting al-
  914.      lows them all to be sent to the SAME line on your printer. 
  915.  
  916.           Line Overwriting may be imposed upon PopForm by the placing a 
  917.      ~\~ code at the end of a line.  When PopForm encounters ~\~ at the end 
  918.      of a line, it will immediately issue a carriage return, but no line 
  919.      feed, to the printer.  That will cause the following line to overwrite 
  920.  
  921.  
  922. PUTTING IT ALL TOGETHER                  16
  923.  
  924.  
  925.  
  926.  
  927.      the line containing ~\~. 
  928.  
  929.           When trying out complex forms that you're preparing, you'll often 
  930.      find that the printout contains blank lines that you hadn't anti-
  931.      cipated.  All you have to do is to place a ~\~ at the end of the line 
  932.      preceding an unwanted blank.  That will inform PopForm that a carriage 
  933.      return, but no line feed should be issued at the end of that line.
  934.  
  935.           If the form you're creating requires lines longer than 80 
  936.      characters, but your word processor or text editor doesn't permit 
  937.      them (as is the case with the FORMED program provided with PopForm), 
  938.      you'll need to "double up" by using the ~+~ code.  If ~+~ is encoun-
  939.      tered at the end of a line, PopForm will join that line with the one 
  940.      immediately following it.  As your form is being printed, PopForm will 
  941.      send NEITHER a line feed NOR carriage return after a line ending with 
  942.      ~+~.  Hence, the following line will be printed adjacent to (not over) 
  943.      the one containing ~+~.  Be sure never to use the ~+~ code in the mid-
  944.      dle of another code.  Though one tilde code may immediately follow 
  945.      another, PopForm does not allow codes-within-codes.
  946.  
  947.           By the way, you may FORCE PopForm to issue BOTH a carriage return 
  948.      AND a line feed if you place a ~<~ at the end of a line.  This feature 
  949.      is generally useful only if you're using Word Wrap (covered later).
  950.  
  951.           NOTE:
  952.                When using your word processor to look at a disk file 
  953.           created by PopForm, you may notice what appear to be many 
  954.           blank lines that you hadn't "programmed".  In many cases, 
  955.           these may not really be blank lines at all; your word pro-
  956.           cessor may simply be displaying a blank line wherever the 
  957.           file has a carriage return, even though that carriage return 
  958.           MIGHT NOT be accompanied by a line feed.  Don't worry.  When 
  959.           the file is actually printed, it'll probably look much bet-
  960.           ter.  Remember that the forms you create with PopForm might 
  961.           make liberal use of carriage returns without line feeds. 
  962.           
  963.  
  964.      - Missing Data
  965.  
  966.           Sometimes the data you're looking for won't be anywhere on the 
  967.      screen.  Look at LABEL.FRM, and you'll see that it consists of four 
  968.      name and address lines.  The third line instructs PopForm to look to 
  969.      the screen for the sequence, "Street: ".  That sequence, however, 
  970.      won't be followed by anything if TESTDATA is being displayed.  You 
  971.      might, therefore, expect PopForm to print LABEL.FRM with a blank third 
  972.      line.  
  973.  
  974.           But you'd probably prefer that PopForm omit the third line en-
  975.      tirely when the information being sought for inclusion thereon is mis-
  976.      sing.  Well, that's exactly what the program will do in this case.  
  977.      Why?  Because PopForm sees that next character following the keyword 
  978.      specification is "\".  Whenever PopForm encounters a "\" right after a 
  979.  
  980.  
  981. PUTTING IT ALL TOGETHER                  17
  982.  
  983.  
  984.  
  985.  
  986.      keyword or a screen coordinate, the program primes itself NOT to print 
  987.      the line if it cannot find what it's been told to find on the screen.   
  988.      Examples:
  989.  
  990.           ~("payee: ",10)~     - will send a line feed to the printer,
  991.                                  whether or not it finds something on the
  992.                                  screen immediately after "payee: "
  993.           ~("payee: "\,10)~    - will send a line feed to the printer,
  994.                                  ONLY IF PopForm finds something on the
  995.                                  screen immediately after "payee: "
  996.           ~(RC-0513\,10)~      - will send a line feed to the printer,
  997.                                  ONLY IF PopForm finds something at
  998.                                  row 05, column 13.
  999.  
  1000.           For each line skipped while printing the body of a form, an extra 
  1001.      line will be inserted at the end, thus ensuring correct spacing bet-
  1002.      ween successive forms.
  1003.  
  1004.           It makes sense to use "\" only when there is only one item on a 
  1005.      form line, that item being defined by a the tilde code containing "\".  
  1006.      Never use "\" if the line contains ANYTHING other than a single tilde 
  1007.      code sequence.  
  1008.  
  1009.  
  1010.      - Comments
  1011.  
  1012.           When you want to place comments into your form, but you don't 
  1013.      want them to print, begin each with ~{ and end each with }~.  This 
  1014.      will allow you to make notes in each form about why you did such and 
  1015.      such.  Example:
  1016.  
  1017.                ~{The following lines contain the client's address}~
  1018.                
  1019.      The line shown above will not be printed when the forms is prepared.  
  1020.      A comment must always be the last (if not the only) item found on a 
  1021.      line.
  1022.  
  1023.  
  1024.      - Postponing Printing
  1025.  
  1026.           Normally, when you access PopForm, you will want a form printed 
  1027.      at once.  Thus, when you type in the name of a form, printing normally 
  1028.      begins immediately.
  1029.  
  1030.           But it may occasionally be more convenient for you to grab data 
  1031.      from one screen, then another, then another (and so on), AND THEN beg-
  1032.      in printing.  This may be accomplished in two different ways. 
  1033.  
  1034.           One is for you to simply press ALT-P until "PCUE" (the PrintCUE) 
  1035.      appears in the upper right corner of PopForm's screen.  If you do this 
  1036.      before you select a form to "print", all output will be directed, not 
  1037.      to the printer, but to the PrintCUE.  Once you've sent your last form 
  1038.  
  1039.  
  1040. PUTTING IT ALL TOGETHER                  18
  1041.  
  1042.  
  1043.  
  1044.  
  1045.      to the PrintCUE, press Ctrl-P to actually print all the stuff you've 
  1046.      been saving up.
  1047.  
  1048.           The other way to postpone printing is for you to place the SENDTO 
  1049.      code into your form.  Example:
  1050.  
  1051.                               ~SENDTO myfile~
  1052.                               This goes to the "myfile" file
  1053.                               ~SENDTO LPT3~
  1054.                               This goes to the printer 
  1055.  
  1056.      When PopForm encounters the top line's code, it will immediately re-
  1057.      direct its output to the "myfile" file, instead of to the printer.  
  1058.      The next line would, therefore, be sent to "myfile".  The third line, 
  1059.      however, directs PopForm to begin printing again (through port LPT3, 
  1060.      in this case).
  1061.  
  1062.           After using the SENDTO code, PopForm will assume that, when you 
  1063.      press Ctrl-P, you will want to print the file specified by SENDTO, not 
  1064.      the standard PrintCUE.
  1065.  
  1066.  
  1067.      - Multi-screen Forms
  1068.  
  1069.           You may occasionally have forms that pull their data from two or 
  1070.      more screens.  Therefore, PopForm needs a facility to allow you to 
  1071.      temporarily exit, call up another screen, and then resume processing 
  1072.      the form.  ~NEWSCREEN x~ is the answer.  It tells PopForm to display 
  1073.      message x, wait for you to press a key, and then temporarily exit.  
  1074.      After you've called up another screen of data and pressed PopForm's 
  1075.      hotkey, the program will pick up where it had left off just before 
  1076.      exiting.  If x is missing, PopForm will exit without displaying a mes-
  1077.      sage or waiting for you to press a key.  Examples:
  1078.  
  1079.           ~NEWSCREEN~
  1080.           ~NEWSCREEN "Press ENTER, get new screen, and come back"~
  1081.  
  1082.           The first line would cause PopForm to exit without displaying a 
  1083.      message.  The second line would display the message in quotes, wait 
  1084.      for either the ENTER or ESC key to be pressed, and then exit.  If you 
  1085.      pressed the ESC key, PopForm would exit without expecting you to call 
  1086.      up another screen; when you pressed the hotkey again, PopForm WOULD 
  1087.      NOT pick up where it left off.  The ESC key, therefore, allows you to 
  1088.      break out of a repetitive cycle.  
  1089.  
  1090.  
  1091.      - Centering
  1092.  
  1093.           If you want the data picked off the screen to be centered on the 
  1094.      printed page, you may find the ~CENTER x~ code useful.  When PopForm 
  1095.      encounters that code, it primes itself to center ALL data picked off 
  1096.      the screen until it encounters a ~CENTER OFF~ code.  x is the column 
  1097.  
  1098.  
  1099. PUTTING IT ALL TOGETHER                  19
  1100.  
  1101.  
  1102.  
  1103.  
  1104.      on which the data will be centered.
  1105.  
  1106.  
  1107.      - Margins
  1108.  
  1109.           PopForm normally sends to the printer exactly what is contained 
  1110.      in the form being printed.  If you'd like PopForm to add margins of 
  1111.      its own, you should use the ~MARGINS t,l,b,r~ code.  t,l,b, and r are 
  1112.      not really margins at all.  Rather, they are the top, left, bottom, 
  1113.      and right lines and columns at which printing will begin and end.
  1114.  
  1115.           t is the line on which you wish to begin printing on each page.  
  1116.      l is the column at which you want to begin printing each line.  b is 
  1117.      the line to which you wish to continue printing each page before a new 
  1118.      sheet is automatically fed.  r is the approximate column to which you 
  1119.      wish to continue printing each line if you're using Word Wrap.
  1120.  
  1121.           t and b must be numbers between 1 and 255.  l and r should be 
  1122.      between 1 and the maximum number of columns your printer is set to 
  1123.      print, minus 5.  For example, if you printer is in 80-column mode, r 
  1124.      must be no more than 75.  Remember, r has no effect unless Word Wrap 
  1125.      is ON.
  1126.  
  1127.           PopForm's defaults are: t=1, b=255, l=1, and r=255.  If you des-
  1128.      ignate a zero for any of these items, PopForm will assume that item to 
  1129.      be unimportant and reset it to its default value.  When a default val-
  1130.      ue is set, PopForm gives up control over that item.
  1131.  
  1132.  
  1133.      - Headers and Footers
  1134.  
  1135.           If you want each page to have a header or footer, use the 
  1136.      ~HD x,y~ or ~FT x,y~ code.  y is the header or footer you want printed 
  1137.      at the top or bottom of each page, and x is the minimum number of 
  1138.      blank lines you need between the header of footer and the rest of the 
  1139.      text on the page.  If you want a page number printed within the header 
  1140.      of footer, use the # character.  The maximum number of characters 
  1141.      allowed in a header or footer is 74.  Example:
  1142.  
  1143.                                  ~FT 3,Page #~ 
  1144.  
  1145.      This will cause PopForm to place a footer at the bottom of each page, 
  1146.      three lines below the main text that's printed.  If the page being 
  1147.      printed were page 21, the footer would say, "Page 21".
  1148.  
  1149.  
  1150.      - Word Wrap
  1151.  
  1152.           Sometimes, the information to be grabbed from the screen and 
  1153.      placed into the form being printed will not be of a predictable 
  1154.      length.  That might make creating a form difficult, since you may not 
  1155.      know how much space to allocate to variable-length data.
  1156.  
  1157.  
  1158. PUTTING IT ALL TOGETHER                  20
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164.           Word wrap may help you here.  When it's turned on, PopForm will 
  1165.      completely ignore all line feeds contained in the form.  Instead, 
  1166.      PopForm will decide for itself when it needs to skip down to the 
  1167.      next line.  In order for this to work, you should place a ~MARGINS 
  1168.      t,l,b,r~ code just before turning on Word Wrap with the ~WRAP ON~ 
  1169.      code.  If you don't, PopForm will consider the left margin to be 1 and 
  1170.      the right one to be 255.  
  1171.  
  1172.           To turn Word Wrap off, place a ~WRAP OFF~ code into the form at 
  1173.      the appropriate place.  If you want to change margins at that point, 
  1174.      you should place a ~MARGINS t,l,b,r~ code right after it.
  1175.  
  1176.           Word Wrap's operation is fairly straightforward.  When the line 
  1177.      that PopForm is printing comes within 9 characters of the right margin 
  1178.      you've designated, it begins looking for a blank space or hyphen.  As 
  1179.      soon as one is encountered, PopForm sends a carriage return and line 
  1180.      feed to the printer.  If no blank space or hyphen is encountered be-
  1181.      fore the line is 5 characters LONGER than the right margin you speci-
  1182.      fied, PopForm will arbitrarily break the word and insert a hyphen.  
  1183.      Therefore, PopForm may occasionally break long words (>14 characters) 
  1184.      at awkward points.  So, don't use big words too often in the forms 
  1185.      that PopForm will print.
  1186.  
  1187.           Remember, PopForm ignores all line feeds contained in the form 
  1188.      it's printing under Word Wrap's control.  So how can you FORCE PopForm 
  1189.      to issue a line feed and carriage return, despite the fact that Word 
  1190.      Wrap is on?  Answer:  the ~<~ code.  Just place a ~<~ wherever you 
  1191.      want.  For example, if you want a blank line between paragraphs, each 
  1192.      paragraph should be preceded by two ~<~ codes.  Take a look at 
  1193.      LETTER.FRM to see how these codes are used.
  1194.  
  1195.  
  1196.      - Printer Codes
  1197.  
  1198.           There may be times when you need to switch from 1/6" to 1/8" 
  1199.      spacing, and back.  You may need to change fonts in the middle of a 
  1200.      page, or even in mid-line.  Or you may occasionally need to underline 
  1201.      what's printed.  In order to handle these changes, you'll have to 
  1202.      utilize PopForm's special printer control tilde codes.  And, of 
  1203.      course, you'll also have to be familiar with the decimal code se-
  1204.      quences recognized by your printer. 
  1205.  
  1206.           If you want to place printer control codes into your forms, enter 
  1207.      each as a series of 3-digit numbers.  Each such sequence must begin 
  1208.      with "~PRINTCODE ", and end it with a tilde.  Assume that the con-
  1209.      trol code you want to send your printer is "27 69" (ESC E).  To send 
  1210.      that code, you should actually place into your form this character 
  1211.      sequence:
  1212.  
  1213.                               ~PRINTCODE 027069~
  1214.   
  1215.  
  1216.  
  1217. PUTTING IT ALL TOGETHER                  21
  1218.  
  1219.  
  1220.  
  1221.  
  1222.      Note that "027069" is used, not "2769", "27 69" or "27,69".  Use se-
  1223.      quences consisting of three-digit numbers only.  See CHECK.FRM for an 
  1224.      example of this code sequence.  The control code sent by CHECK.FRM is 
  1225.      designed to place an Epson-compatible printer into the proper mode to 
  1226.      print IBM graphic characters.
  1227.  
  1228.  
  1229.      - Graphics
  1230.  
  1231.           You may occasionally need to place graphics symbols into your 
  1232.      form.  Though this may be an unfamiliar chore, you'll find your word 
  1233.      processor fully capable of handling it.  The trick is to figure out 
  1234.      how, so dig out that manual and look.  
  1235.  
  1236.           Some word processors will display graphics symbols as odd-looking 
  1237.      characters.  Don't worry, when they're printed out, they'll look just 
  1238.      fine -- assuming, of course, that your printer has been placed into its 
  1239.      graphics printing mode.  Some printers can't handle graphics at all.  
  1240.      Some will print graphics in their default modes.  And others, like the 
  1241.      Epson-compatibles, are capable of graphics, but need to be given the 
  1242.      proper command to go into that mode.  That's why CHECK.FRM's first 
  1243.      line contains a printer control code sequence to place Epson-compat-
  1244.      ible printers into graphics mode.
  1245.  
  1246.  
  1247.      - Date, Day of Week, Time
  1248.  
  1249.           If your form contains ~DATE~, ~WEEKDAY~, or ~TIME~, the compu-
  1250.      ter's current date, day of the week, or time will be be substituted at 
  1251.      the appropriate spot on the form as it prints.
  1252.  
  1253.  
  1254.      - Keeping up with Totals
  1255.  
  1256.           PopForm will print any number you wish, whether it's contained in 
  1257.      the form being printed or on the screen.  But what if you need the 
  1258.      program to keep tabs on running totals that accumulate during the 
  1259.      processing of many screens'-worth of data?  That's what the NUMx 
  1260.      variables are for.  There are nine of them, NUM1...NUM9.  They are all 
  1261.      set to zero with each new form that you prepare.  From that starting 
  1262.      point, each can be adjusted as you wish by performing mathematical 
  1263.      operations on it.  And each can be printed easily.  Here are some 
  1264.      examples:
  1265.  
  1266.                ~NUM1+10~       adds 10 to NUM1
  1267.                ~NUM2*3~        multiplies NUM2 by 3
  1268.                ~NUM8/4~        divides NUM8 by 4
  1269.                ~NUM8-NUM4~     subtracts NUM4 from NUM8 and keeps the
  1270.                                result in NUM8
  1271.                ~NUM5~          prints NUM5
  1272.                ~NUM5CC~        clears NUM5 (reduces it to zero)
  1273.  
  1274.  
  1275.  
  1276. PUTTING IT ALL TOGETHER                  22
  1277.  
  1278.  
  1279.  
  1280.  
  1281.      What about ~NUM5=90~?  That won't work!  To give NUM5 a value of 90, 
  1282.      you should use two operations: ~NUM5CC~~NUM5+90~.  The first reduces 
  1283.      NUM5 to zero, and the next adds 90 to it.
  1284.  
  1285.           If no mathematical operation is designated, the tilde code con-
  1286.      taining a NUMx variable tells PopForm to simply print the variable; 
  1287.      otherwise, PopForm is being told to perform an operation.  When per-
  1288.      forming mathematical operations the first operator must always be the 
  1289.      NUMx variable.
  1290.  
  1291.           The precision with which NUMx variables will be printed may be 
  1292.      set with the DECIMALS code.  Examples
  1293.           
  1294.                ~DECIMALS 3~     causes PopForm to NUMx variables to 3                            
  1295.                                 decimal places
  1296.                ~DECIMALS 0~     no decimal places will be printed.
  1297.  
  1298.      PopForm's default is DECIMALS 2.
  1299.  
  1300.  
  1301.      - Alphanumeric variables
  1302.  
  1303.           PopForm will print any alphanumeric string you wish, whether it's 
  1304.      contained in the form being printed or on the screen.  But what if you 
  1305.      need the program to remember a particular word or phrase and manipu-
  1306.      late it later.  That's what the WRDx variables are for.  There are 
  1307.      nine of them, WRD1...WRD9.  They all start out blank when you begin 
  1308.      preparing a form.  From that starting point, each can be adjusted as 
  1309.      you wish by performing basic operations on it.  And each can be prin-
  1310.      ted easily.  Here are some examples:
  1311.  
  1312.                ~WRD1+"hello"~  adds "hello" at the end of WRD1
  1313.                ~WRD1-"hello"~  deletes "hello" from WRD1
  1314.                ~WRD5~          prints WRD5
  1315.                ~WRD5CC~        clears WRD5 (makes WRD5 blank)
  1316.  
  1317.      What about ~WRD5="hello"~?  That won't work!  To make WRD5 equal to 
  1318.      "hello", you should use two operations: ~WRD5CC~~WRD5+"hello"~.  The 
  1319.      first makes WRD5 blank, and the next adds "hello" to it.
  1320.  
  1321.           If no operation is designated, the tilde code containing a WRDx 
  1322.      variable tells PopForm to simply print the variable; otherwise, Pop-
  1323.      Form is being told to perform an operation.  When performing opera-
  1324.      tions the first operator must always be the WRDx variable.
  1325.  
  1326.  
  1327.      - Feeding a new sheet of paper
  1328.  
  1329.           Whenever PopForm encounters the code, ~NEWPAGE~, it will send 
  1330.      your printer the form feed command.  If you want a new page to be fed 
  1331.      only if the last line printed is within x lines of the bottom "margin" 
  1332.      (see the Margins section above), the code should be, ~NEWPAGE x~, 
  1333.  
  1334.  
  1335. PUTTING IT ALL TOGETHER                  23
  1336.  
  1337.  
  1338.  
  1339.  
  1340.      where x is a number.
  1341.  
  1342.  
  1343.      - Pausing for keyboard entry     
  1344.  
  1345.           If, in the middle of a form, you want PopForm to ask you 
  1346.      something, use the INPUT code.  Whatever you enter at the keyboard 
  1347.      will be placed into the printout.  Consider the a form consisting of 
  1348.      one line:
  1349.  
  1350.                ~TIME~, ~DATE~         ~INPUT "Your Name: "~
  1351.  
  1352.      In this example, PopForm would print the computer's time and date.  
  1353.      Then, it would print several blank spaces, pause, and display the 
  1354.      phrase, "Your Name: ", on the screen.  When you entered your name, 
  1355.      PopForm would print it at the point at which it had just paused.  If 
  1356.      the command had been ~[20]INPUT "Your Name: "~, PopForm would have 
  1357.      printed the first 20 characters of your name (if you name were fewer 
  1358.      than 20 characters, PopForm would have padded it with spaces).
  1359.  
  1360.           The phrase you specify with the INPUT code will be displayed on 
  1361.      the third line of the PopForm window.  If a one-line phrase isn't 
  1362.      enough, you should use the ~WRITELN x~ code just before INPUT.  
  1363.      WRITELN will display phrase x on the first line of the window, unless 
  1364.      that line has already been filled by a previous WRITELN instruction 
  1365.      (in which case phrase x will be displayed on the second line).  By 
  1366.      placing two WRITELN codes just before an INPUT code, you can display a 
  1367.      three-line prompt.
  1368.  
  1369.  
  1370.      - Blocking off text
  1371.  
  1372.           If you want the ability to highlight a certain block off text on 
  1373.      the screen and send it to the printer, use the ~BLOCK~ code.  When 
  1374.      PopForm encounters that code, it will place a flashing block-type cur-
  1375.      sor at the top-left corner of the screen.  Use the arrow keys to move 
  1376.      the cursor to the point that you wish to designate as the top-left 
  1377.      corner of the block to be printed and press the space bar.  Then, move 
  1378.      to the bottom-right corner of the block.  As you move, you'll notice 
  1379.      that the block is highlighted.  Hitting the Enter key will cause the 
  1380.      highlighted text to be sent to the printer.
  1381.  
  1382.           If you want the text that's printed to be lined up at a certain 
  1383.      left margin, be sure to put a ~MARGINS code (see the Margins section) 
  1384.      just before the ~BLOCK code.  Then, reset the margins by placing an-
  1385.      other ~MARGINS code after the ~BLOCK code.  Example:
  1386.  
  1387.        ~MARGINS=1,10,255,255~     sets default margins, except left margin
  1388.        ~BLOCK~
  1389.        ~MARGINS=1,1,255,255~      sets default margins all around
  1390.  
  1391.  
  1392.  
  1393.  
  1394. PUTTING IT ALL TOGETHER                  24
  1395.  
  1396.  
  1397.  
  1398.  
  1399.      - Printing another file
  1400.  
  1401.           When PopForm encounters the code, ~FILE x~, it will cease 
  1402.      printing the current form and begin printing file x.  Example:
  1403.  
  1404.                             ~FILE 2d.fil~
  1405.  
  1406.      This code would tell PopForm to immediately find the file named, 
  1407.      "2D.FIL" and begin printing it.  If one file sends PopForm to another, 
  1408.      the only way to get back is to have the second file send PopForm back 
  1409.      to the first.
  1410.  
  1411.  
  1412.  
  1413.  
  1414.  
  1415.  
  1416.  
  1417.  
  1418.  
  1419.  
  1420.  
  1421.  
  1422.  
  1423.  
  1424.  
  1425.  
  1426.  
  1427.  
  1428.  
  1429.  
  1430.  
  1431.  
  1432.  
  1433.  
  1434.  
  1435.  
  1436.  
  1437.  
  1438.  
  1439.  
  1440.  
  1441.  
  1442.  
  1443.  
  1444.  
  1445.  
  1446.  
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453. PUTTING IT ALL TOGETHER                  25
  1454.  
  1455.  
  1456.  
  1457.  
  1458.      FOR PROGRAMMERS ONLY
  1459.  
  1460.           PopForm has some simplistic programming features that allow it to 
  1461.      react to certain conditions.  Let's assume that you want the program 
  1462.      to read the character at a certain screen location and compare it to a 
  1463.      character that you define.  If the characters match (or DON'T match, 
  1464.      if you prefer), you can have PopForm stop printing, skip down to a 
  1465.      certain line (identified by a LABEL), and then continue printing.
  1466.  
  1467.           All this can be done by using IF in conjunction with the GOTO, 
  1468.      GOSUB..RETURN, and DO..UNTIL, tilde codes.  This version of PopForm 
  1469.      allows GOSUBs and DO loops to be nested up to three levels deep.
  1470.  
  1471.           You may notice that, as PopForm is sending a form to the printer, 
  1472.      it's pop-up box rapidly flashes on and off.  What's happening is this:  
  1473.      When a GOTO, GOSUB, or DO statement is being executed, PopForm needs 
  1474.      to move to different locations in the form.  As it does so, it dis-
  1475.      plays a message explaining what it's doing.  When it finds the proper 
  1476.      location, the screen is cleared, so that PopForm may read it.  All 
  1477.      this may happen very quickly, especially if PopForm is working with 
  1478.      small files.   If, for some reason, PopForm can't find the proper loc-
  1479.      ation, it will appear to "hang up".  In this case, all you normally 
  1480.      have to do is to press the ESC key.  Then, look at the file that Pop-
  1481.      Form was accessing and try to fix it's programming logic.
  1482.  
  1483.  
  1484.      - Labels
  1485.  
  1486.           Labels mark important points in your file.  They can be of great 
  1487.      benefit when used in conjunction with the IF, GOTO, and GOSUB state-
  1488.      ments.  If, for instance, certain characters or values appear on your 
  1489.      screen, you might want PopForm to skip to a certain point in the file 
  1490.      and resume printing.  If the screen contains other data, you might 
  1491.      want to skip to another section (or even to another file, altogether).  
  1492.  
  1493.  
  1494.      - IF statements
  1495.  
  1496.           IF statements do comparisons.  When PopForm encounters an IF 
  1497.      statement, it reads the string of characters between the "IF" and the 
  1498.      comparison expression ( =, <, >, or <> ).  It makes the appropriate 
  1499.      comparison between that string and the string of characters following 
  1500.      the comparison expression.  If, and only if, the comparison is true 
  1501.      (eg: equal, if you specify =, or not equal if you specify <>), the 
  1502.      NEXT FOLLOWING tilde code will be executed.  If the comparison is not 
  1503.      true (eg: not equal if you specify =, or equal if you specify <>), the 
  1504.      following tilde code will be SKIPPED.  Examples:
  1505.  
  1506.           ~IF 1=NUM2~~GOTO END~   Now is the time...     
  1507.                                     If NUM2=1, then PopForm will go to
  1508.                                     the position in the form identified
  1509.                                     by an END label (~LABEL END~).  Other-
  1510.  
  1511.  
  1512. FOR PROGRAMMERS ONLY                     26
  1513.  
  1514.  
  1515.  
  1516.  
  1517.                                     wise, it will continue on to print,
  1518.                                     "   Now is the time...". 
  1519.  
  1520.           ~IF "david"<>(RC-0512,5)~~GOSUB DAVE~  
  1521.                                     If the five characters located at 
  1522.                                     screen coordinates 0512 do not match
  1523.                                     "david", then PopForm will execute the
  1524.                                     subroutine beginning at ~LABEL DAVE~.
  1525.                                     (see the GOSUB discussion below) 
  1526.  
  1527.           ~IF ESC=NEWSCREEN "Press a Key: "~~GOTO END~  
  1528.                                     If, when the NEWSCREEN function was 
  1529.                                     displaying, "Press a Key: ", you 
  1530.                                     pressed the ESC key, PopForm would go 
  1531.                                     to the END label.
  1532.  
  1533.           If the first string of characters to be compared is a number, 
  1534.      PopForm will attempt numerical comparison.  If it's a date, it will 
  1535.      attempt to compare dates.  Otherwise, it will compare words or phrases 
  1536.      (ignoring capitalization).  PopForm recognizes dates in only three 
  1537.      formats, demonstrated as follows:
  1538.  
  1539.           12 September 1992:    12 SEP 92 (day month year)
  1540.                                           (use first 3 letters of month)
  1541.                                 9/12/92   (month/day/year) 
  1542.                                 9-12-92   (month-day-year)
  1543.  
  1544.  
  1545.           Whenever PopForm encounters an IF statement, it knows that it 
  1546.      needs to perform a comparison of TWO, and ONLY TWO items.  If one of 
  1547.      the things to be compared is a known quantity (such as the ESC key, or 
  1548.      a particular word or number for which you're looking), that item must 
  1549.      appear to the LEFT of the operator ( =, <>, <, > ).  The variable 
  1550.      against which you're comparing the known quantity must always be to 
  1551.      the right of the operator.  If two variables are being compared, place 
  1552.      to the left of the operator the one that does NOT require PopForm to 
  1553.      pick data from the screen or from your keyboard.  If both (or neither) 
  1554.      items are variables requiring keyboard or screen scanning, the order 
  1555.      is not important.  Finally, any attempt to compare items that can't 
  1556.      logically be compared may have unpredictable results.
  1557.  
  1558.  
  1559.      - GOSUB routines
  1560.  
  1561.           When PopForm encounters ~GOSUB x~ code, it immediately finds the 
  1562.      position in the file identified as ~LABEL x~.  It executes everything 
  1563.      between that point and the next ~RETURN~ code.  Then, it returns to the
  1564.      spot in the file just following the ~GOSUB x~ code and continues its 
  1565.      way through the file.  Example:
  1566.  
  1567.                     This is the beginning.
  1568.                     ~GOSUB FILLER~
  1569.  
  1570.  
  1571. FOR PROGRAMMERS ONLY                     27
  1572.  
  1573.  
  1574.  
  1575.  
  1576.                     And now I'm done.
  1577.                     ~GOTO END~              
  1578.                     ~LABEL FILLER~
  1579.                     Here's some filler material.
  1580.                     Now, I'll return.
  1581.                     ~RETURN~
  1582.                     ~LABEL END~
  1583.  
  1584.      This sequence would cause the following to be printed:
  1585.                     
  1586.                     This is the beginning.
  1587.                     Here's some filler material.
  1588.                     Now, I'll return.
  1589.                     And now I'm done.
  1590.  
  1591.  
  1592.      - DO loops
  1593.  
  1594.           Each DO loop maintains its own counter, which is initialized at 
  1595.      a value of one when the DO loop begins execution.  Whenever PopForm 
  1596.      encounters a ~DO~ code, it will continue its work until it reaches an 
  1597.      ~UNTIL COUNT x~ code.  Then, it will increase its counter by 1 and 
  1598.      compare that value against x.  If the counter is less than or equal to 
  1599.      x, PopForm will then go to ~DO~ code and begin the process again.  
  1600.      When the counter is finally greater than x, PopForm will break out of 
  1601.      the DO loop.
  1602.  
  1603.           As DO loops are processing, you may ask PopForm to do certain 
  1604.      things, depending upon what the counter's current value is.  Just use 
  1605.      an IF code to do so.  Example:
  1606.  
  1607.           ~IF 2=COUNT~~GOTO TWO~...counter not equal to 2    
  1608.                                       If the counter's value is 2, PopForm 
  1609.                                       will skip immediately to the file 
  1610.                                       position identified by ~LABEL TWO~; 
  1611.                                       otherwise, it will print,"...counter
  1612.                                       not equal to 2".
  1613.  
  1614.      Note that COUNT must always be the SECOND value compared, never the 
  1615.      first.  You may execute GOSUB routines that are outside the DO loop, 
  1616.      but all GOTO's contained within a DO loop must refer to labels that 
  1617.      are also within the DO loop.
  1618.  
  1619.  
  1620.      - Programming Example
  1621.  
  1622.           Programming is potentially an extremely frustrating endeavor.  
  1623.      You'll undoubtedly have to do a lot of trial and error work when you 
  1624.      work on even mildly complicated forms.  But if you stick with it, 
  1625.      you'll be glad that you did. 
  1626.  
  1627.           Take a look at PROGRAM.FRM and FEDEX.FRM.   Copy them 
  1628.  
  1629.  
  1630. FOR PROGRAMMERS ONLY                     28
  1631.  
  1632.  
  1633.  
  1634.  
  1635.      to into files with different names and have fun experimenting with the 
  1636.      copies.  Also copy TESTDATA to another file, so that you can exper-
  1637.      iment with it, too.  Be sure to use only an ASCII-type editor, or 
  1638.      you'll be wasting your time.
  1639.  
  1640.  
  1641.  
  1642.  
  1643.  
  1644.  
  1645.  
  1646.  
  1647.  
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.  
  1655.  
  1656.  
  1657.  
  1658.  
  1659.  
  1660.  
  1661.  
  1662.  
  1663.  
  1664.  
  1665.  
  1666.  
  1667.  
  1668.  
  1669.  
  1670.  
  1671.  
  1672.  
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678.  
  1679.  
  1680.  
  1681.  
  1682.  
  1683.  
  1684.  
  1685.  
  1686.  
  1687.  
  1688.  
  1689. FOR PROGRAMMERS ONLY                     29
  1690.  
  1691.  
  1692.  
  1693.  
  1694.      PREPARING LONG FORMS
  1695.  
  1696.           First, write your form without any codes.  When it's done, go 
  1697.      through it again, this time substituting codes where appropriate.  
  1698.  
  1699.           If the form has lots of variables to be plugged in by PopForm, it 
  1700.      is recommended that you direct PopForm to use Word Wrap.  Turn it on 
  1701.      and set your margins at the beginning of the form.  And be sure to use 
  1702.      the ~<~ code wherever you REQUIRE a line feed and carriage return; 
  1703.      otherwise, PopForm will try to place everything into the same para-
  1704.      graph.
  1705.  
  1706.           As you write your form with your word processor, make sure that 
  1707.      you don't break words with hyphens at the end of lines.  When PopForm 
  1708.      sends the form to the printer, each line containing a variable my end 
  1709.      up with a length different from what you had anticipated.  A word 
  1710.      that you had originally broken with a hyphen at the end of a line may 
  1711.      end up in the middle of a line on the printed sheet.
  1712.  
  1713.  
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.  
  1721.  
  1722.  
  1723.  
  1724.  
  1725.  
  1726.  
  1727.  
  1728.  
  1729.  
  1730.  
  1731.  
  1732.  
  1733.  
  1734.  
  1735.  
  1736.  
  1737.  
  1738.  
  1739.  
  1740.  
  1741.  
  1742.  
  1743.  
  1744.  
  1745.  
  1746.  
  1747.  
  1748. PREPARING LONG FORMS                     30
  1749.  
  1750.  
  1751.  
  1752.  
  1753.      COMMON ERRORS
  1754.  
  1755.      - Improper vertical spacing between lines.  This is particularly a 
  1756.      problem when you're creating a complicated form that uses lots of 
  1757.      programming logic.  The problem is that you aren't thinking through 
  1758.      the form's process well enough.  There may be places where PopForm 
  1759.      will issue a line feed when you don't want it to.  Locate those spots
  1760.      and place a ~\~ at the end of the line.  If PopForm ISN'T issuing 
  1761.      line feeds where you expect, use the ~<~ code at the end of each line 
  1762.      where you want the line feed.
  1763.  
  1764.      - Improper horizontal spacing on a line.  You probably haven't antici-
  1765.      pated the lengths of an item that PopForm will plug into the form.  
  1766.      As a result, subsequent printing on that line will not be aligned 
  1767.      properly.  Try using the ~\~ and ~+~ codes to join and overwrite 
  1768.      lines.  Make a test file to experiment with these codes.  Then, when 
  1769.      you understand how they work, place them into a "real" form.
  1770.  
  1771.      - Failure to place a tilde (~) at each end of a code.  This causes all 
  1772.      sorts of problems, as PopForm attempts to decipher everything between 
  1773.      two tildes.
  1774.  
  1775.      - Omission of the word LABEL from codes intended as labels.
  1776.  
  1777.      - Failure to end a subroutine (called by GOSUB) with a RETURN code.  
  1778.  
  1779.      - Failure to end a DO loop with an UNTIL statement.
  1780.  
  1781.      - Failure to follow each code's recommended syntax.
  1782.  
  1783.  
  1784.  
  1785.  
  1786.  
  1787.  
  1788.  
  1789.  
  1790.  
  1791.  
  1792.  
  1793.  
  1794.  
  1795.  
  1796.  
  1797.  
  1798.  
  1799.  
  1800.  
  1801.  
  1802.  
  1803.  
  1804.  
  1805.  
  1806.  
  1807. COMMON ERRORS                            31
  1808.  
  1809.  
  1810.  
  1811.  
  1812.      CUSTOMIZING POPFORM
  1813.  
  1814.           To customize PopForm, you need to load the program by entering 
  1815.      the following at the DOS prompt:
  1816.           
  1817.                              PopForm $08xxxx
  1818.  
  1819.      where each "x" represents a letter or number, as explained in the 
  1820.      following sections.
  1821.  
  1822.           Note that you need to make this special entry only once.  From 
  1823.      then, on, PopForm may be loaded merely by entering "PopForm" at the 
  1824.      DOS prompt.
  1825.  
  1826.      HOTKEY 
  1827.  
  1828.           PopForm's default hotkey is ALT-F.  To change it, substitute for 
  1829.      the third "x" the new key you wish to use in combination with the ALT 
  1830.      key.  Also substitute for the first two x's the scan code for that 
  1831.      key.  You'll need to consult with a DOS manual to find a complete list 
  1832.      of scan codes, but here are a few:  
  1833.  
  1834.                Q=10  W=11  E=12  R=13  T=14  Y=15  U=16  I=17  O=18  
  1835.                P=19  A=1E  S=1F  D=20  F=21  G=22  H=23  J=24  K=25  
  1836.                L=26  Z=2C  X=2D  C=2E  V=2F  B=30  N=31  M=32
  1837.  
  1838.      Example:  To make ALT-Q the hotkey, you should enter "PopForm 
  1839.      $0810Q..." at the DOS prompt.  Here, "Q" takes the place of the third 
  1840.      "x", and its scan code (10) takes the place of the first two.
  1841.  
  1842.           To use the CTRL key in place of the ALT key, substitute "$04" for 
  1843.      "$08".  The Left Shift key is $02, and Right Shift key is $01.
  1844.  
  1845.      COLORS
  1846.  
  1847.           You may designate the primary colors used by PopForm.  The fore-
  1848.      ground color's code substitutes for the fifth "x", while the back-
  1849.      ground is contained at the sixth position.  The color codes you may 
  1850.      use are: 
  1851.  
  1852.                 0 Black     1 Blue     2 Green   3 Cyan            
  1853.                 4 Red       5 Magenta  6 Brown   7 Light Gray      
  1854.  
  1855.  
  1856.      DEFAULT SETTING
  1857.  
  1858.      PopForm's default customizing instruction is, "$0821F70":
  1859.              21=the scan code of the F key used (with ALT) to invoke PopForm
  1860.              F =the F key
  1861.              7 =light gray (foreground color)
  1862.              0 =black (background)
  1863.  
  1864.  
  1865.  
  1866. CUSTOMIZING POPFORM                      32
  1867.                            THE "POWER OFFICE" LINE-UP
  1868.  
  1869. Each unique program in this series requires a hard disk-equipped IBM-compatible 
  1870. PC with 512K of memory.  The following paragraphs contain brief descriptions.
  1871.  
  1872.      TickleX    --> the ultimate  in scheduling/planning/docket control
  1873.      MT-Tracker --> TickleX's scheduling power, plus client management 
  1874.      BillPower  --> time & billing with totally integrated general ledger
  1875.      RAMdesk    --> pop-up network message system, calculator, scheduler,
  1876.                     phone directory, time/work/expense log, data base 
  1877.      PopForm    --> pop-up form printing program.
  1878.      Nifty      --> combination menu and pop-up help system
  1879.  
  1880.  
  1881. BILLPOWER and BILLPOWER PLUS
  1882.  
  1883.      BillPower is a system designed to relieve you of the drudgery involved  in 
  1884. billing.   In a nutshell, it will track the time you work on professional  mat-
  1885. ters,  keep up with your receipts and disbursements, and calculate  the  amount 
  1886. owed  by  each client.  And it will automatically prepare  informative  monthly 
  1887. statements  for all your clients.  All on either a stand-alone or pop-up basis!
  1888.  
  1889.      Engineered exclusively for the small firm, this innovative software offers 
  1890. a  rare combination of power and ease of use at a fair price.  Unlike  programs 
  1891. that  attempt to electronically emulate ancient manual  accounting  procedures, 
  1892. BillPower  is designed to capitalize upon the power of your computer.   If  you 
  1893. are  an  "old hand" at bookkeeping, then open your mind to a  real-time  system 
  1894. which  immediately updates all balances at the time an entry is made; one  that 
  1895. does  not require periodic batch postings or annual close-outs; one  that  pro-
  1896. vides a convenient method for correcting erroneous entries; a system that never 
  1897. erases  old data in the interest of consolidation.  You'll find both  BillPower  
  1898. and BillPower Plus to be advanced products.
  1899.  
  1900.      --> BillPower ($100):  time, billing, & bookkeeping for firms  with  
  1901.          up to  three timekeepers -- includes bank  account  management,  
  1902.          income-expense reports, balance sheets, & several bill formats.
  1903.                 
  1904.      --> BillPower Plus ($150):  time,  billing, & bookkeeping for  firms 
  1905.          with up to fifteen timekeepers -- builds upon BillPower's   fea-
  1906.          tures,  adding the abilities to keep extensive indexed memos  on     
  1907.          any subject, maintain notes on thousands of people, conduct con-
  1908.          flict of interest checks, prepare mailing labels, and more. 
  1909.  
  1910.      BillPower   can prepare several types of reports.  Whenever  you   request  
  1911. one,  you will be presented with a screen listing the parameters by  which  you 
  1912. can choose the information to be included.  After you have selected the  appro-
  1913. priate   parameters,  BillPower will hunt through its data base  for   informa-
  1914. tion  meeting your specifications.  The report may be sent to the  screen,  the 
  1915. printer or to a disk file. 
  1916.  
  1917.      Finally, while other time and billing programs may offer "links" to exter-
  1918. nal accounting software, BillPower completely integrates its bookkeeping  func-
  1919. tions into the rest of the program.  In fact, BillPower Plus can simultaneously
  1920. update  affected G/L accounts (as well as a client's balance and  aged  receiv-
  1921. ables) at the time that a disbursement or receipt is entered.  This "real-time" 
  1922. approach to bookkeeping, virtually unprecedented in a time and billing program, 
  1923. saves you the time you would otherwise spend making duplicate G/L entries, pos-
  1924. ting transactions, and/or transferring files from one program to another.  With 
  1925. BillPower  Plus,  a SINGLE entry can handle all the updating that needs  to  be 
  1926. done.  No other program offers such a degree of integration.  NONE!
  1927.  
  1928.  
  1929. TICKLEX
  1930.  
  1931.      TickleX  ($50) is a tickler/calendar program that will keep track of  your 
  1932. appointments  and deadlines, print your itinerary at the beginning of each  day 
  1933. day,  keep  a "to-do" list, and chart the projected course of each  matter  you 
  1934. handle.   It will also schedule trips and vacations, print weekly  and  monthly 
  1935. calendars, and beep at you when something needs doing.  Stand-alone or POP-UP.
  1936.  
  1937.      TickleX  is  unusual in its ability to dynamically link reminders  to  ap-
  1938. pointments and deadlines.  Assume, for example, that you have a very  important 
  1939. meeting  scheduled for 15 August.  As with other programs, you could  establish 
  1940. reminders  several days or weeks in advance to allow adequate  preparation  for 
  1941. the meeting.  For the purposes of this example, let's say that you have entered 
  1942. a  reminder  one week in advance and another two weeks in advance.   Now,  what 
  1943. happens if the meeting is moved forward one week to 22 August?  Again, all tic-
  1944. kler  programs  would  allow  you to reschedule  it.   But  TickleX  will  also 
  1945. automatically  update the two reminders, moving each one week forward in  order 
  1946. to maintain the original reminder intervals.  Other programs would require  you 
  1947. to  search  for each reminder, delete it, and then enter it  again  on  another 
  1948. date.  This TickleX exclusive is an absolute "must" for offices that have  fre-
  1949. quent schedule changes.
  1950.  
  1951.      TickleX  is also unique in the way it handles multi-day  events.   TickleX 
  1952. allows  you  to enter an event such as a week-long trip with  just  one  entry.  
  1953. Other  programs might require a separate entry to be made for each day  of  the 
  1954. trip.   If your trip plans change, you need change only a single entry  if  you 
  1955. have TickleX.
  1956.  
  1957.      TickleX  even has built-in project planning.  No fancy charts,  mind  you.  
  1958. Just a very simplistic means of linking and updating related events.  And  it's 
  1959. completely  integrated into the TickleX system.  All project updates are  auto-
  1960. matically incorporated into the same schedule that contains appointments, dead-
  1961. lines, vacations, etc.
  1962.  
  1963.      Add to these features an attractive user interface, the ability to  attach 
  1964. extensive  notes to each scheduled event, a number of other nice  touches,  and 
  1965. TickleX comes up a winner.  Whether you're an executive looking for a  powerful 
  1966. centralized  personnel  scheduler, a busy entrepreneur needing  an  easy-to-use 
  1967. tickler system, or a lawyer seeking the ultimate docket control software, Tick-
  1968. leX  is the program for you.  There isn't a more robust scheduler available  at 
  1969. any price.  At only $50, it's a steal.  
  1970.  
  1971.  
  1972. MT-TRACKER
  1973.  
  1974.      MT-Tracker  is the ideal client tracker and scheduler.  It integrates  the 
  1975. scheduling power of TickleX with the ability to track several thousand clients, 
  1976. companies, contacts, projects, or jobs.  Also included is a note-keeping module 
  1977. that will link memos to the dates and clients to which they apply.
  1978.  
  1979.      In addition to the expected name, address, phone, and contact information, 
  1980. each client record has space for six full lines of miscellaneous data and  nine 
  1981. USER-CUSTOMIZABLE  fields.  And each note kept in the Note-keeping  module  may 
  1982. contain up to seventeen lines of information.
  1983.  
  1984.      Because  MT-Tracker is an integrated system, you can easily zip  from  one 
  1985. module  to another.  Assume, for instance, that you're looking at  Mr.  Smith's 
  1986. record, and you'd like to see everything (not just one or two items)  scheduled 
  1987. for him during the coming month.  A few keystrokes later, what you need will be 
  1988. displayed on your monitor or sent to your printer.  When you're finished  look-
  1989. ing  at the schedule, press a key to re-display Mr. Smith's record.  Notes  and 
  1990. logged events, income, and expenses are just as easily accessed.
  1991.  
  1992.      If  you're a sales representative, consultant, personal injury lawyer,  or 
  1993. anyone  else who needs to track clients, customers, or jobs, this is the  soft-
  1994. ware you've been waiting for.  Give it a try.
  1995.  
  1996.  
  1997. RAMDESK
  1998.  
  1999.      RAMdesk ($50) is a handy  "pop-up" program  that contains a number of
  2000. features useful in a business environment.  It will:
  2001.  
  2002.      --> if used on a network, instantly send and receive messages;
  2003.      --> schedule and review upcoming events on a pop-up basis,  allowing
  2004.            up to 20 alarms per day;
  2005.      --> maintain a pop-up record of income, expenses, and the time spent
  2006.            working on various projects; 
  2007.      --> provide a pop-up address and phone directory, giving you instant
  2008.            access to records on hundreds of people;
  2009.      --> provide a pop-up programmable calculator with a 50-line "tape";
  2010.      --> allow you to establish numerous pop-up databases, such as  to-do
  2011.            lists, general ledger account listings, etc.
  2012.  
  2013.      Once  RAMdesk  is  installed (it needs 7 to 45K),  it's instantly   avail-
  2014. able  at  the touch  of  a hot-key combination.  It may be called up from with-
  2015. in  most  word  processors, spreadsheets, and other primary  applications.   If 
  2016. you  also  happen to have BillPower  and  TickleX,  you'll find   that  RAMdesk 
  2017. ties  in  beautifully with them.   Whatever appointments  or  deadlines  you've 
  2018. scheduled  with RAMdesk  will  be  automatically picked up by   TickleX,  while 
  2019. BillPower  will  automatically take in the  services,  expenses,  and  receipts 
  2020. you've logged with RAMdesk.   TickleX  and  BillPower can  even assimilate  en-
  2021. tries  made into RAMdesk  by users on other  computers around the   office.  If 
  2022. the  computers are networked, the assimilation will be  handled  automatically; 
  2023. otherwise, you may use  floppy  disks to transfer the data  between each "sate-
  2024. llite" computer and the main database on another machine. 
  2025.  
  2026.  
  2027. RESEARCH
  2028.  
  2029.      ReSearch ($50) is a program designed to help you keep track  of  research, 
  2030. chronologies,  and evidence.  When you enter an item of research, you may  tell 
  2031. ReSearch  such things as the source, page, and line number where that item  can 
  2032. be  found.  You may also enter an eleven-line summary of the item and  indicate  
  2033. the subject category into which the item falls. 
  2034.  
  2035.      A prime use of this program is to create printouts of research data,  sor-
  2036. ted  alphabetically  by subject abbreviation.  Another use is to keep  tabs  on 
  2037. documents  and other evidence (who sent it, who received it, its current  loca-
  2038. tion,  etc.).  It can also be used to prepare a chronological report of  a  se-
  2039. quence  of  events which may have been entered at random into  the  data  base.  
  2040. Finally,  it can scan depositions provided to you on disk in  industry-standard 
  2041. ASCII  format and transfer verbatim text directly from the depositions  to  its 
  2042. data base.
  2043.  
  2044.  
  2045. NIFTY
  2046.  
  2047.      Nifty  ($50) is a unique program that may be used as either a pop-up  Help 
  2048. system or a DOS menu.  It combines an elegantly simple and attractive user  in-
  2049. terface  (much appreciated by the inexperienced user) with a consistent,  flex-
  2050. ible means of set-up (benefiting the system integrator). 
  2051.  
  2052.      As  a  Help system, Nifty can, at the touch of a key or two,  provide  the 
  2053. user  with  on-line assistance on any subject (assuming that  appropriate  help 
  2054. files  have been created by the person installing the system).  Since the  Help 
  2055. system is memory-resident, it may be accessed from within nearly any other  ap-
  2056. plication. 
  2057.  
  2058.      Simplicity is also the rule when Nifty is used as a Menu system.  A single 
  2059. keystroke can execute any program or read any file on the computer.  Some  menu 
  2060. systems may be easier to set up, but few provide such flexible  screen-creation 
  2061. facilities, and none are easier to use once they're installed.  With Nifty, you 
  2062. may "draw" your own menus and place into them any messages you desire.  You may 
  2063. use  either passwords or "security levels" to control access to sub-menus.  You
  2064. you may even set a timer to automatically execute any program at any time.
  2065.  
  2066.      If you know a computer novice, you know a  candidate  for using this handy
  2067. product.  And if you understand DOS paths and file extensions, you know  enough
  2068. to set up a Nifty Help or Menu system, yourself. 
  2069.